package com.bailong.aop.demo04.log;

import org.apache.log4j.Logger;
import org.aspectj.lang.ProceedingJoinPoint;



public class LogAdvice {
    private Logger logger = Logger.getLogger(LogAdvice.class);
    /**
     * 前置日志通知
     */
    public void beforelog(){
        //判断日志是否启动，如果没启动的话不搞
        if(logger.isInfoEnabled()){
            logger.info("日志启动了");
        }
//        System.out.println("方法开始执行了");
    }

    /**
     * 后置日志通知
     */
    public void afterlog(){
        if(logger.isInfoEnabled()){
            logger.info("方法执行结束");
        }
//        System.out.println("方法执行结束");
    }

    /**
     * 环绕通知
     * @param point 连接点
     */
    public Object aroundLog(ProceedingJoinPoint point) throws Throwable {
        if(logger.isInfoEnabled()){
            logger.info("环绕通知前置执行");
        }
//            System.out.println("环绕通知前置执行");
            //执行原来的方法
            Object result = point.proceed();
        logger.info("环绕通知后置执行");
//            System.out.println("环绕通知后置执行");

        return result;
    }

    /**
     * 抛出异常后通知
     */
    public void afterThrowLog(){
        if(logger.isInfoEnabled()){
            logger.info("方法跑出异常");
        }
//        System.out.println("方法跑出异常");
    }

    /**
     * 方法返回后
     */
    public void afterReturnLog(){
        if(logger.isInfoEnabled()){
            logger.info("方法返回");
        }
//        System.out.println("方法返回");
    }
}
